#ifndef __FAST_CONBLE_FUNC_H__
#define __FAST_CONBLE_FUNC_H__


#include "udp_server.h"

/**
 * @description: 发送URL请求
 * @return {*}  成功：发送字节数
 *              失败：-1
 */
int FastConbleUrlRequest(void);

/**
 * @description: 发送短地址控制请求
 * @param {uint16_t} short_addr 短地址
 * @param {uint8_t *} data 控制数据包
 * @param {uint16_t *} data_len 控制数据包长度
 * @return {*}  成功：发送字节数
 *              失败：-1
 */
int FastConbleShortAddrControl(uint16_t short_addr, uint8_t *data, uint16_t data_len);

/**
 * @description: 发送场景控制请求
 * @param {uint32_t} scene_id 场景ID
 * @return {*}  成功：发送字节数
 *              失败：-1
 */
int FastConbleSceneControl(uint32_t scene_id);

/**
 * @description: 发送组控制请求
 * @param {uint32_t} scene_id 场景ID
 * @return {*}  成功：发送字节数
 *              失败：-1
 */
int FastConbleGroupControl(uint8_t group_addr, uint16_t device_type, uint8_t *data, uint16_t data_len);

int FastConbleTriggerDataReport(uint8_t delay_max, uint16_t short_addr, uint8_t *mask);

/**
 * @description: 设置临时分组
 * @param {uint8_t} group_id 临时分组ID
 * @param {uint16_t} start_addr 起始短地址
 * @param {uint16_t} cookie 用来控制临时分组分包和清除
 * @param {uint8_t} mask 短地址掩码
 * @return {*}  成功：发送字节数
 *              失败：-1
 */
int FastConbleSetTempGroup(uint8_t group_id, uint16_t start_addr, uint16_t cookie, uint8_t *mask);

/**
 * @description: UDP包应答
 * @param {enum BLE_TYPE} 包类型
 * @param {uint16_t} 应答序号
 * @return {*}  成功：发送字节数
 *              失败：-1
 */
int FastConbleAck(enum BLE_TYPE type, uint16_t seq);

#endif
